/**
 * 更新用户表结构脚本
 */
const { sequelize } = require('../config/database');

async function updateUserSchema() {
  try {
    // 测试数据库连接
    await sequelize.authenticate();
    console.log('数据库连接成功');

    // 获取查询接口
    const queryInterface = sequelize.getQueryInterface();
    
    console.log('开始更新用户表结构...');
    
    // 检查username列是否已存在
    try {
      // 添加username字段
      console.log('添加username字段...');
      await queryInterface.addColumn('users', 'username', {
        type: sequelize.DataTypes.STRING(50),
        allowNull: true,
        unique: true,
        after: 'email'
      });
      console.log('username字段添加成功');
    } catch (error) {
      if (error.message.includes('Duplicate column')) {
        console.log('username字段已存在，跳过');
      } else {
        throw error;
      }
    }
    
    // 检查role列是否已存在
    try {
      // 添加role字段
      console.log('添加role字段...');
      await queryInterface.addColumn('users', 'role', {
        type: sequelize.DataTypes.STRING(20),
        allowNull: false, 
        defaultValue: 'user',
        after: 'level'
      });
      console.log('role字段添加成功');
    } catch (error) {
      if (error.message.includes('Duplicate column')) {
        console.log('role字段已存在，跳过');
      } else {
        throw error;
      }
    }
    
    // 检查permissions列是否已存在
    try {
      // 添加permissions字段
      console.log('添加permissions字段...');
      await queryInterface.addColumn('users', 'permissions', {
        type: sequelize.DataTypes.TEXT,
        allowNull: true,
        after: 'role'
      });
      console.log('permissions字段添加成功');
    } catch (error) {
      if (error.message.includes('Duplicate column')) {
        console.log('permissions字段已存在，跳过');
      } else {
        throw error;
      }
    }

    console.log('用户表结构更新完成！');

  } catch (error) {
    console.error('更新用户表结构失败:', error);
  } finally {
    // 关闭数据库连接
    await sequelize.close();
  }
}

// 执行更新函数
updateUserSchema(); 